package com.geng.demo.util;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class OASendUtil {

    /**
     * 发送OA对接的API服务
     * @param url
     * @param userid
     * @param token
     * @param appId
     * @param param
     * @return
     */
    public static String sendWorkflow(String url, String userid, String token, String appId, Map<String, Object> param){
        HttpRequest post = HttpRequest.post(url);
        post.closeCookie();  //流程创建人不一致，cookie缓存导致，会优先获取缓存中的创建人，禁用掉cookie
        HttpResponse response =
                post.header("Content-Type", "application/json")
                        .header("appid", appId)
                        .header("token", token)
                        .header("userid", userid)
                        .body(JSONUtil.toJsonStr(param))
                        .execute();
        String result = response.body();
        return result;
    }


    /**
     * 创建流程的主表字段组装
     * @param key
     * @param value
     * @return
     */
    public static Map<String, Object> fieldParam(String key, Object value){
        Map<String, Object> param = new HashMap<>();
        param.put("fieldName", key);
        param.put("fieldValue", value);
        return param;
    }

    /**
     * 将列表按照已经数量拆分成多个列表
     * @param list  原列表
     * @param batchSize  每条最大数量
     * @param <T>
     * @return
     */
    public static <T> List<List<T>> splitList(List<T> list, int batchSize) {
        List<List<T>> result = new ArrayList<>();
        int totalSize = list.size();
        for (int i = 0; i < totalSize; i += batchSize) {
            // 计算子列表的结束位置
            int end = Math.min(i + batchSize, totalSize);
            // 获取子列表
            List<T> subList = list.subList(i, end);
            // 将子列表添加到结果中
            result.add(subList);
        }
        return result;
    }

}
